#ifndef __TIMERFD_H__
#define __TIMERFD_H__

#include <functional>

using std::function;
using std::bind;

class TimerFd
{
    using TimerFdCallback = function<void()>;
public:
    TimerFd(TimerFdCallback &&cb, int initSec, int peridocSec);
    ~TimerFd();

    //启动或者停止
    void start();
    void stop();
private:
    //封装了read函数
    void handleRead();
    //创建用于通信的文件描述符
    int createTimerFd();
    //设置定时器
    void setTimer(int initSec, int peridocSec);

private:
    int _tfd;//由TimerFd创建的用于通信的文件描述符
    TimerFdCallback _cb;//需要执行的任务
    bool _isStarted;//起到标识
    int _initSec;//起始时间
    int _peridocSec;//周期时间（闹钟的间隔时间）
};

#endif
